package beans;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

@Entity
@Table(name="Comandas")
public class ComandaBean implements Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="idComanda",nullable=false)
	private int idComanda;
	
	@Transient
	private int numeroMesa; // Se genera, no se persiste
	
	@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
	@Fetch(FetchMode.SUBSELECT)
	@JoinColumn(name="idComanda")
	private List<itemComandaBean> items;
	
	@Column(name="estado")
	private String estado;

	public ComandaBean(){
		this.items=new ArrayList<itemComandaBean>();
	}
	
	public ComandaBean(int numeroMesa, String estado) {
		this.numeroMesa=numeroMesa;
		this.estado=estado;
		this.items=new ArrayList<itemComandaBean>();
	}
	
	public void addItemComandaBean(itemComandaBean item) {
		this.items.add(item);
		
	}

	public int getIdComanda() {
		return idComanda;
	}

	public void setIdComanda(int idComanda) {
		this.idComanda = idComanda;
	}

	public int getNumeroMesa() {
		return numeroMesa;
	}

	public void setNumeroMesa(int numeroMesa) {
		this.numeroMesa = numeroMesa;
	}

	public List<itemComandaBean> getItems() {
		return items;
	}

	public void setItems(List<itemComandaBean> items) {
		this.items = items;
	}

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	
}
